package cn.itsource.hrm.web.controller;

import cn.itsource.hrm.util.AjaxResult;
import cn.itsource.hrm.util.FastDfsApiOpr;
import org.apache.commons.io.FilenameUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

@RestController
@RequestMapping("/fastdfs")
public class FastdfsController {

    //上传文件
    @PostMapping("/upload")
    public AjaxResult upload(MultipartFile file){
        try {
            //获取文件名后缀
            String extension = FilenameUtils.getExtension(file.getOriginalFilename());
            //上传文件到服务器，得到文件地址
            String filePath = FastDfsApiOpr.upload(file.getBytes(), extension);
            //将文件地址返回到前台
            return AjaxResult.me().setResultObj(filePath);
        } catch (IOException e) {
            e.printStackTrace();
            return AjaxResult.me().setSuccess(false).setMessage("文件上传失败");
        }

    }

    //上传文件byte[]方式
    @PostMapping("/uploadBytes")
    public AjaxResult uploadBytes(@RequestBody byte[] bytes,@RequestParam("extName") String extName){
        try {
            //上传文件到服务器，得到文件地址
            String filePath = FastDfsApiOpr.upload(bytes, extName);
            //将文件地址返回到前台
            return AjaxResult.me().setResultObj(filePath);
        } catch (Exception e) {
            e.printStackTrace();
            return AjaxResult.me().setSuccess(false).setMessage("文件上传失败");
        }

    }
    //上传文件
    @PostMapping("/download")
    public byte[] download(@RequestParam("path")String path){
        try {
            //1.去掉最前面的 “/” : group1/M00/00/02/dhma1l5XFxaAfbETAACBNnahKck769.zip
            path = path.startsWith("/") ? path.substring(1) : path;

            //2.获取第一个“/”的位置 : 6
            int index = path.indexOf("/");

            //3.根据第一个“/”的位置截取group : group1
            String groupName = path.substring(0,index);

            //4.根据第一个“/”的位置截取后面的内容作为fileName : M00/00/02/dhma1l5XFxaAfbETAACBNnahKck769.zip
            String fileName  = path.substring(index+1);

            return FastDfsApiOpr.download(groupName, fileName);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }

    }
}
